//! # Rust GraphQL Dynamic Generator
//! 
//! A powerful library for dynamically generating GraphQL schemas and resolvers
//! from database table structures using Rust and SeaORM.
//! 
//! ## Features
//! 
//! - Automatic GraphQL schema generation from database tables
//! - Dynamic resolver creation for CRUD operations
//! - Support for complex relationships and nested queries
//! - Type-safe database operations with SeaORM
//! - Configurable field mappings and custom types
//! - Built-in pagination and filtering
//! 
//! ## Quick Start
//! 
//! ```rust,no_run
//! use rust_graphql::{SchemaGenerator, DatabaseIntrospector, Config};
//! use sea_orm::Database;
//! 
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//!     let config = Config::from_env()?;
//!     let db = Database::connect(&config.database_url).await?;
//!     
//!     let introspector = DatabaseIntrospector::new(db);
//!     let generator = SchemaGenerator::new(introspector);
//!     let schema = generator.generate_schema().await?;
//!     
//!     // Use schema with your web framework
//!     Ok(())
//! }
//! ```

pub mod config;
pub mod errors;
pub mod models;
pub mod schema;
pub mod services;
pub mod utils;

// Re-export commonly used types
pub use config::Config;
pub use errors::{Error, Result};
pub use models::*;
pub use schema::SchemaGenerator;
pub use services::{DatabaseIntrospector, DatabaseService};
pub use utils::{TypeMapper, NamingConverter};

/// Current version of the library
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

/// Initialize tracing for the library
pub fn init_tracing() {
    tracing_subscriber::fmt()
        .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
        .init();
}